import pyautogui
import pyperclip
import time
import csv
'''
程序打包说明：
1)利用conda创建一个新的虚拟环境,这样可以保证打包文件最小
2)在虚拟环境中安装 pyautogui,pyperclip,Pyinstaller 库
3)在wechat文件目录下进行打包,在虚拟环境命令行执行,pyinstaller -F -w wechat.py
4)把dist目录下的exe文件,以及group.csv复制到一个目录下,两个文件就是成果了
5)如果想继续打包为安装包，可以使用打包工具继续打包安装即可。

'''

# 打开微信，定位到好友对话界面,并发送消息给好友
def send_msg(friend_name,msg):
    pyautogui.hotkey('ctrl', 'alt', 'w')    # Ctrl + alt + w 打开微信
    pyautogui.hotkey('ctrl', 'f')           # 搜索好友
    pyperclip.copy(friend_name)  
    pyautogui.hotkey('ctrl', 'v')           # 模拟键盘 ctrl + v 粘贴
    time.sleep(1)
    pyautogui.press('enter')                # 回车进入好友消息界面

    pyperclip.copy(msg)             # 复制需要发送的内容到粘贴板
    pyautogui.hotkey('ctrl', 'v')   # 模拟键盘 ctrl + v 粘贴内容
    time.sleep(1)
    pyautogui.press('enter')        # 发送消息
   
    # 下面这2条重复非常有必要，不然会丢失窗口焦点
    time.sleep(1)
    pyautogui.hotkey('ctrl', 'alt', 'w')    # Ctrl + alt + w 打开微信


# 过滤掉字符串前后的空格
def rlstrip(str):
    return str.rstrip().lstrip()

# 从csv中读取用户昵称，尊称，和祝福用语
def send_group_msg(csv_file,sep='%'):
    # 打开csv文件，按照行进行读取内容
    with open(csv_file, 'r',encoding='utf-8') as f:
        csv_reader = csv.reader(f,delimiter=sep)

        for L in csv_reader:# 获得本行的字符串列表，因为csv文件默认逗号为列分隔符，所以用E文逗号隔开各列
            # process each L:L是行数据列表，比如['雷斯林', '亲爱的家人', '在新春佳节之际，越胜祝福大家身体健康，家庭幸福！/::)']
            
            if L[0][0] != '#': #行数据列表的第一个字符串的第一个字母是#的时候，是注释。不是#的进行处理。
                print(L)
                friend_name = rlstrip(L[0])# 获取用户昵称,去除昵称前后的空格
                msg = rlstrip(L[1]) + ', ' + rlstrip(L[2]) # 组合要发送的消息
                print(msg)    
                send_msg(friend_name,msg)

# 主程序
if __name__ == '__main__':

    send_group_msg('group.csv')

